package Ep05_StackAndQueue._0232;

import java.util.Stack;

public class Mine {
    Stack<Integer> stackIn;     // 入栈
    Stack<Integer> stackOut;    // 出栈

    // 空参构造器：先new两个Stack出来
    public Mine() {
        stackIn = new Stack<>();
        stackOut = new Stack<>();
    }

    // push操作：都先放在入栈中
    public void push(int x){
        stackIn.push(x);
    }

    // pop操作：在弹出之前先判断出栈是否为空，如果不为空，就先pop出栈即可，入栈不变，以保证顺序
    public int pop(){
        dumpStackIn();
        return stackOut.pop();
    }

    // peek操作：看看队列第一个元素
    public int peek(){
        dumpStackIn();
        return stackOut.peek();
    }

    // isEmpty操作：判断该“队列”是否为空
    public boolean empty(){
        return stackIn.isEmpty() && stackOut.isEmpty();
    }

    private void dumpStackIn(){
        if (!stackOut.isEmpty()) return;
        while (!stackIn.isEmpty()){
            stackOut.push(stackIn.pop());
        }
    }

}
